import axios from 'axios'
import Nprogress from 'nprogress'//引入进度条js
import  'nprogress/nprogress.css'//引入进度条css

 const service = axios.create({
    baseURL:'/mock',
    timeout:'20000'
})

//请求拦截器和响应拦截器是用来让我们配置头和添加额外的功能用的
// 创建请求拦截器 拦截的是请求报文
service.interceptors.request.use((config)=>{
    Nprogress.start()//开启进度条
    return config
},
//请求拦截器的报错一般不写
// (error)=>{
//     alert(error)
// }
);

// 创建响应拦截器  拦截的是响应报文
service.interceptors.response.use((response) => {
    Nprogress.done()//关闭进度条
    return response.data//请求成功以后返回的不是真正的响应,而是响应里面的数据
},(error) => {
    Nprogress.done()//关闭进度条
    // 可以统一处理错误
    alert('请求失败'+error.message || '未知错误')
    // 统一处理完失败,错误之后,你可以继续让后面再次处理,也可以选择不处理
    return new Promise(() => {})//终端promise链条,代表这个错误后面就不用处理了
    // return Promise.reject(new Error('请求失败'))
    // 代表错误可以继续往后传递,后面axios返回的promise可以继续处理
});

// 把封装好的axios实例暴露出去,以后我们使用的就都是这个封装好的axios实例
export default service
